//
//  XMGTopiceViewController.m
//  百思不得姐
//
//  Created by 杨庆 on 2017/1/10.
//  Copyright © 2017年 杨庆. All rights reserved.
//
#import "XMGTopiceViewController.h"
#import <AFNetworking/AFNetworking.h>//网络请求
#import <SDWebImage/UIImageView+WebCache.h>//网络图片
#import <MJExtension/MJExtension.h> //字典转模型
#import "XMGTopic.h"//模型类
#import <MJRefresh/MJRefresh.h>//上拉下拉刷新
#import "XMGTopicCell.h"

@interface XMGTopiceViewController ()
/** 帖子数据 */
@property (nonatomic, strong) NSMutableArray *topics;
/** 当前页码 */
@property (nonatomic, assign) NSInteger page;
/** 当加载下一页数据时需要这个参数 */
@property (nonatomic, copy) NSString *maxtime;
/** 上一次的请求参数 */
@property (nonatomic, strong) NSDictionary *params;
@end

@implementation XMGTopiceViewController

- (NSMutableArray *)topics
{
	if (!_topics) {
		_topics = [NSMutableArray array];
	}
	return _topics;
}

- (void)viewDidLoad {
	[super viewDidLoad];
	
	// 初始化表格
	[self setupTableView];
	
	// 添加刷新控件
	[self setupRefresh];
}

//重用标识符
static NSString * const XMGTopicCellId = @"topic";
- (void)setupTableView
{
	// 设置内边距
	CGFloat bottom = self.tabBarController.tabBar.height;
	CGFloat top = XMGTitleViewY + XMGTitleViewH;
	self.tableView.contentInset = UIEdgeInsetsMake(top, 0, bottom, 0);
	// 设置滚动条的内边距
	self.tableView.scrollIndicatorInsets = self.tableView.contentInset;
	
	self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
	self.tableView.backgroundColor = [UIColor clearColor];
	
	// 注册
	[self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([XMGTopicCell class]) bundle:nil] forCellReuseIdentifier:XMGTopicCellId];
}

- (void)setupRefresh
{
	self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewTopics)];
	// 自动改变透明度
	self.tableView.mj_header.automaticallyChangeAlpha = YES;
	[self.tableView.mj_header beginRefreshing];
	
	self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreTopics)];
}

#pragma mark - 数据处理
/**
 * 加载新的帖子数据
 */
- (void)loadNewTopics
{
	// 结束上啦
	[self.tableView.mj_footer endRefreshing];
	
	// 参数
	NSMutableDictionary *params = [NSMutableDictionary dictionary];
	params[@"a"] = @"list";
	params[@"c"] = @"data";
	params[@"type"] = @(self.type);
	self.params = params;
	
	// 发送请求
	[[AFHTTPSessionManager manager] GET:@"http://api.budejie.com/api/api_open.php" parameters:params success:^(NSURLSessionDataTask *task, NSDictionary *responseObject) {
		if (self.params != params) return;
		
		// 存储maxtime
		self.maxtime = responseObject[@"info"][@"maxtime"];
		
		// 字典 -> 模型
		self.topics = [XMGTopic mj_objectArrayWithKeyValuesArray:responseObject[@"list"]];
		
		// 刷新表格
		[self.tableView reloadData];
		
		// 结束刷新
		[self.tableView.mj_header endRefreshing];
		
		// 清空页码
		self.page = 0;
	} failure:^(NSURLSessionDataTask *task, NSError *error) {
		if (self.params != params) return;
		
		// 结束刷新
		[self.tableView.mj_header endRefreshing];
	}];
}

// 先下拉刷新, 再上拉刷新第5页数据

// 下拉刷新成功回来: 只有一页数据, page == 0
// 上啦刷新成功回来: 最前面那页 + 第5页数据

/**
 * 加载更多的帖子数据
 */
- (void)loadMoreTopics
{
	// 结束下拉
	[self.tableView.mj_header endRefreshing];
	
	// 参数
	NSMutableDictionary *params = [NSMutableDictionary dictionary];
	params[@"a"] = @"list";
	params[@"c"] = @"data";
	params[@"type"] = @(self.type);
	NSInteger page = self.page + 1;
	params[@"page"] = @(page);
	params[@"maxtime"] = self.maxtime;
	self.params = params;
	
	// 发送请求
	[[AFHTTPSessionManager manager] GET:@"http://api.budejie.com/api/api_open.php" parameters:params success:^(NSURLSessionDataTask *task, NSDictionary *responseObject) {
		if (self.params != params) return;
		
		// 存储maxtime
		self.maxtime = responseObject[@"info"][@"maxtime"];
		
		// 字典 -> 模型
		NSArray *newTopics = [XMGTopic mj_objectArrayWithKeyValuesArray:responseObject[@"list"]];
		[self.topics addObjectsFromArray:newTopics];
		
		// 刷新表格
		[self.tableView reloadData];
		
		// 结束刷新
		[self.tableView.mj_footer endRefreshing];
		
		// 设置页码
		self.page = page;
	} failure:^(NSURLSessionDataTask *task, NSError *error) {
		if (self.params != params) return;
		
		// 结束刷新
		[self.tableView.mj_footer endRefreshing];
	}];
}

#pragma mark - Table view data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
	self.tableView.mj_footer.hidden = (self.topics.count == 0);
	return self.topics.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	XMGTopicCell *cell = [tableView dequeueReusableCellWithIdentifier:XMGTopicCellId];
	
	cell.topic = self.topics[indexPath.row];
	return cell;

}


#pragma mark - 代理方法
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{	
	
	//帖子模型数据
	XMGTopic*topic=self.topics[indexPath.row];
	
	
	return topic.cellHeight;
}
@end
